<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <!-- 可以访问到父类的原型，但是还有问题
  首先就是传参不方便，父类的参数都是在继承之前写死的
  然后就是数据污染的问题
  比如这里使用stu2修改了两个数据，在stu1中就在hobby这个属性上冲突了
  修改name的时候，并没有引起冲突,但是修改hobby就冲突了
  原因是修改name的时候，其实是给stu2赋值，因为它自己的实例上原来没有
  只是添加了一个name=顿健康,
  stu因为自己实例上没有，就向上查找，在父类上查到了一个name,所以用的父类
  就不会出现问题
  在操作stu2.hobby.pop()的时候，并不是赋值，而是直接操作，并没有等于号的赋值
  所以就向上查找，结果就找到了父级，然后改了它，这玩意是所有子类公用的，这就出现问题了
   -->
  <script>
    // 1. 公共构造函数
    function Person(name, hobby) {
      this.name = name;
      this.hobby = hobby;
    }
    Person.prototype.say = function () {
      console.log("人类会说话");
    }

    // 2. 子构造函数
    function Student(theCno) {
      this.theCno = theCno;
    }

    // 3. 原型属性链接
    Student.prototype = new Person("小传", ['吸烟', '喝酒', '烫头']);


    // var stu = new Student("114期", "小传", 39);
    var stu = new Student("114期");
    console.log(stu);
    var stu2 = new Student("113期");
    console.log(stu2);
    stu.say()
    stu2.name = "顿健康"
    stu2.hobby.pop()
    console.log(stu.name);
    console.log(stu2.name);
    console.log(stu.hobby);
    console.log(stu2.hobby);
  </script>
</body>

</html>